/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package factoryTotal;

import java.util.ArrayList;
import javax.swing.Timer;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;

/**
 *
 * @author wida46984148
 */
public class ElementosJuego {

    ArrayList<NaveBaseEnemiga> aNavesEnemigas = new ArrayList<NaveBaseEnemiga>();
    ArrayList<Disparo> aDisparos = new ArrayList<Disparo>();
    Timer timer;
    NaveBase boss;
    NaveBase naveW = null;
    Choques cq = new Choques();
    

    public void posicionaUnitatAmiga(float x, float y, NaveBase nb) {
        nb.posicion(x, y);
        naveW = nb;
    }

    public void posicionaUnitatEnemiga(String nbE)  {
        try {
            if(!(nbE.equals("descanso"))){
                NaveBase nb;
                nb = FabricaNaves.navesEnemigas(nbE);
                if(nb instanceof NaveBoss) boss = nb;
                nb.posicion(nb.pX, nb.pY);
                aNavesEnemigas.add((NaveBaseEnemiga) nb);
            }
        } catch (Exception z) {
            System.err.println(z);
        }
    }

    public void posicionDisparo(float x, float y, Disparo s) {
        s.posicion(x, y);
        aDisparos.add(s);
    }

    public void dibujaElementos(Graphics g, GameContainer gc) {
        try {
            if (naveW != null) {
                    naveW.render(gc, g);
                }
            for (NaveBaseEnemiga n : aNavesEnemigas) {
                if (n != null) {
                    n.render(gc, g);
                }
            }
            for (Disparo n : aDisparos) {
                if (n != null) {
                    n.render(gc, g);
                }
            }

        } catch (Exception e) {
        }
    }

    private void updateElementos(int delta) {
        try {
            for (Disparo n : aDisparos) {
                if (n != null) {
                    n.update(delta);
                }
            }
            for (NaveBaseEnemiga n : aNavesEnemigas) {
                if (n != null) {
                    n.update(delta);
                }
            }

        } catch (Exception e) {
        }
    }

    public void update(int delta) {
        try {

            updateElementos(delta);
            for (NaveBaseEnemiga n : aNavesEnemigas) {
                cq.controlChoques(n.arrayDisparosE, aNavesEnemigas, naveW, aDisparos);
            }
        } catch (Exception e) {
        }
    }
    public NaveBase getBoss(){
        return boss;
    }
}
